package com.cw2.behavioral.interpreter;

/**
 * 非终结表达式
 * 递归方式解析
 */
public class OrExpression extends IDCardExpression{

    // 组合两个终结表达式。最终的判断结果是终结表达式判断出来的,这个表达式只是一个桥梁
    private IDCardExpression cityExp;
    private IDCardExpression typeExp;

    /**
     * 传入需要组合的解释器
     */
    public OrExpression(IDCardExpression cityExp, IDCardExpression typeExp) {
        this.cityExp = cityExp;
        this.typeExp = typeExp;
    }

    @Override
    protected boolean interpreter(String expression) {
        // 定义所有终结表达式的合并逻辑
        return cityExp.interpreter(expression) || typeExp.interpreter(expression);
    }
}
